styleproperty: Fix 'currentColor'
authorBenjamin Otte <otte@redhat.com>
Thu, 12 Jan 2012 03:35:36 +0000 (04:35 +0100)
committerBenjamin Otte <otte@redhat.com>
Thu, 12 Jan 2012 03:38:33 +0000 (04:38 +0100)
It was always looking at the 'color' keyword for the parent context
instead of only doing that when used with the 'color' property.

Tested by border-color-default.ui reftest.

gtk/gtkcssstylepropertyimpl.c

index 2cb5ac1079a85a527a14c64cd472254d33ad5c53..fbc0fc211d0fc010fe01c7ca9bc65ee2b00a80e9 100644 (file)
@@ -58,15 +58,27 @@ restart:
 
   if (G_VALUE_HOLDS (specified, GTK_TYPE_CSS_SPECIAL_VALUE))
     {
-      GtkStyleContext *parent = gtk_style_context_get_parent (context);
       g_assert (g_value_get_enum (specified) == GTK_CSS_CURRENT_COLOR);
 
-      if (parent)
-        g_value_copy (_gtk_style_context_peek_property (parent, "color"), computed);
+      /* The computed value of the ‘currentColor’ keyword is the computed
+       * value of the ‘color’ property. If the ‘currentColor’ keyword is
+       * set on the ‘color’ property itself, it is treated as ‘color: inherit’. 
+       */
+      if (g_str_equal (_gtk_style_property_get_name (GTK_STYLE_PROPERTY (property)), "color"))
+        {
+          GtkStyleContext *parent = gtk_style_context_get_parent (context);
+
+          if (parent)
+            g_value_copy (_gtk_style_context_peek_property (parent, "color"), computed);
+          else
+            _gtk_css_style_compute_value (computed,
+                                          context,
+                                          _gtk_css_style_property_get_initial_value (property));
+        }
       else
-        _gtk_css_style_compute_value (computed,
-                                      context,
-                                      _gtk_css_style_property_get_initial_value (property));
+        {
+          g_value_copy (_gtk_style_context_peek_property (context, "color"), computed);
+        }
     }
   else if (G_VALUE_HOLDS (specified, GTK_TYPE_SYMBOLIC_COLOR))
     {